package com.vxdata

object 函数_6_控制抽象 {
  def main(args: Array[String]): Unit = {
    /**
     * 什么是抽象控制？
     * 1) 抽象控制是一个方法，但是方法的参数a是一个函数
     * 2）函数a的没有参数，也没有返回值
     * 主要目的：在一个方法中调用某个代码块，也可一理解成() => Unit的匿名函数,可以简写成 =>Unit
     */


    /**
     * TODO 值调用：把计算后的值传递过去
     * 将函数 f 的返回结果, 作为 foo() 的参数
     * 注意传参方式   a: Int
     */
    def f = () => {
      println("f...")
      10
    }

    foo(f())

    def foo(a: Int): Unit = {
      println(a)
    }

    /**
     * TODO 名调用：把代码传递过去
     *
     */
    def f1 = () => {
      println("f...")
      10
    }

    foo(f())

    def foo1(a: => Int): Unit = { //注意这里变量 a 没有小括号了
      println(a)
    }


  }
}
